define(['/admin/menus/js/f_tree.js','modal'], function(tree) {

	var zNodes, container = "siteTrees";

	return {
		init: function() {

			loadTree();
			$(".btn-ok").bind("click", save);
			$("#add").bind("click", add);
			$("#del").bind("click", del);
		}
	};

	function loadTree() {

		$.ajax({
			type: 'get',
			url: '/json/sites.json',
			dataType: 'json',
			success: function(_zNodes) {
				zNodes = _zNodes;
				zNodes[0].open = true;
				zNodes[0].childOuter = false;
				initTree();
			}
		});
	}

	function initTree(nodeId) {

		zNodes.sort(function(a, b) {
			return a.index - b.index > 0 ? -1 : 1;
		});
		tree.initTree($("#" + container), zNodes, onClick);
		tree.selectNodeById(container, nodeId);
	}

	function add() {

		/*$('#myModal').modal({
			keyboard: true
		});*/

		reset();
	}

	function del() {

		var nodes = tree.getSelectedNodes(container);

		if (nodes.length == 0) return;
		if (nodes[0].id == "root") {
			alert('无法删除根节点');
			return;
		}

		$.ajax({
			type: 'post',
			url: '/admin/site/del',
			data: {
				id: nodes[0].id
			},
			success: function(_zNodes) {
				changeNodes({
					id: nodes[0].id
				}, 'del');
				initTree();
			}
		});
	}

	function save() {

		var menu = getSite();
		$.ajax({
			type: 'post',
			url: '/admin/site/add',
			data: menu,
			success: function(_zNodes) {
				changeNodes(menu);
				initTree($("#inpID").val());
			}
		});
	}

	function changeNodes(menu, op) {

		var i = zNodes.length - 1;
		for (i; i >= 0; i--) {
			if (zNodes[i].id == menu.id) break;
		}

		if (op == "del")
			zNodes.splice(i, 1);
		else {
			if (i >= 0) {
				zNodes[i].id = menu.id;
				zNodes[i].name = menu.name;
				zNodes[i].url = menu.url;
				zNodes[i].index = menu.index;
				zNodes[i].remark = menu.remark;
			} else {
				zNodes.push(menu);
			}
		}
	}


	function onClick(event, treeId, treeNode, clickFlag) {

		$(zNodes).each(function(index, curr) {
			if (curr.id == treeNode.id) {
				setSite(curr);
				return false;
			}
		});
	}


	function getSite() {
		return {
			id: $("#inpID").val(),
			name: $("#inpName").val(),
			url: $("#inpUrl").val(),
			index: $("#inpIndex").val() || 0,
			remark: $("#inpRemark").val(),
			pId: 'root'
		};
	}

	function setSite(menu) {
		$("#inpID").val(menu.id);
		$("#inpName").val(menu.name);
		$("#inpUrl").val(menu.url);
		$("#inpIndex").val(menu.index || 0);
		$("#inpRemark").val(menu.remark || '');
	}

	function reset() {
		$("#inpID").val('');
		$("#inpName").val('');
		$("#inpUrl").val('');
		$("#inpIndex").val(0);
		$("#inpRemark").val('');
	}


});